package com.itheima.servlets.dao.impl;

import com.itheima.servlets.dao.UserDao;
import com.itheima.servlets.domain.Student;
import com.itheima.servlets.domain.User;

import java.io.*;
import java.util.ArrayList;

public class UserDaoImpl implements UserDao {
    @Override
    public User login(String username, String pwd) throws Exception {

        //创建输入流对象
        BufferedReader br = new BufferedReader(new FileReader("d:\\user.txt"));

        //循环读取数据，并将数据封装到User对象中
        //创建用户对象
        User u = null;
        //循环读取用户信息
        if (username != null && pwd != null) {
            //声明一个变量
            String line;
            while ((line = br.readLine()) != null) {
                u = new User();
                //按行读取 对读取的数据进行分割
                String[] arr = line.split("=");
                //判断登录者的用户信息是否与读取的信息相同
                if (username.equals(arr[0]) && pwd.equals(arr[1])){
                    //相同 将分割后的数据封装到User对象中 结束循环
                    u.setUsername(arr[0]);
                    u.setPwd(arr[1]);
                    break;
                }
            }
        }

        //返回user对象
        return u;
    }

    @Override
    public void addStudent(Student stu) throws IOException {
        //创建输入流对象 将学生对象保存到d:\\student.txt文件下
        BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\student.txt", true));
        //输入学生对象信息
        bw.write(stu.getName() + "," + stu.getAge() + "," + stu.getMath());
        //换行
        bw.newLine();
        //释放资源
        bw.close();
    }

    @Override
    public void findStudent(ArrayList<Student> list) throws IOException {
        //1.创建字符输入流对象 将学生信息从d:\student.txt中读取
        BufferedReader br = new BufferedReader(new FileReader("d:\\student.txt"));

        //2.创建集合对象，用于保存Student对象
        //ArrayList<Student> list = new ArrayList<>();

        //3.循环读取数据，并将数据封装到Student对象中，再把多个学生对象添加到list集合中
        //声明一个变量
        String line;
        //循环
        while ((line = br.readLine()) != null) {
            //创建Student对象
            Student stu = new Student();
            //将读取的数据进行分割
            String[] arr = line.split(",");
            //将学生信息分别进行赋值
            stu.setName(arr[0]);
            stu.setAge(Integer.parseInt(arr[1]));
            stu.setMath(Integer.parseInt(arr[2]));
            //将学生对象添加到list集合中
            list.add(stu);
        }
    }
}
